#include <iostream>

using std::cout;
using std::endl;


//外部类
class MyClass
{
public:
//默认访问权限是私有的
    //嵌套类(内部类)
    class A
    {
    //private:
    public:
        void display() const
        {
            cout << this->_a2 << endl;
            cout << _sa3 << endl;
        }

        int _a2;
        static int _sa3;
    };

    void func(const A & a0){
        _b = 100;//类的成员函数内访问_b
        //外部类不能直接访问内部类中的数据成员
        //cout << _a2 << endl;//error
        cout << a0._a2 << endl;//非静态成员需要传递嵌套类的对象或指针或引用
        //cout << _sa3 << endl;//error 
        cout << A::_sa3 << endl;//嵌套类的静态成员可以直接通过类名访问
    }

public:
    static int _a;//位于全局静态区
    int _b;//4
    A _a1;
};
int MyClass::_a = 0;

void test0(){
    MyClass::_a = 200;//类外部访问_a

    //嵌套类直接创建对象需要是public的
    MyClass::A a;
    cout << "sizeof(MyClass::A):" << sizeof(MyClass::A) << endl;

    cout << "sizeof(MyClass):" << sizeof(MyClass) << endl;
}

int main()
{
    test0();
    return 0;
}

